Multimedia applications capture and playback various types of video and audio data. For instance, a multimedia application may capture video and/or audio data from various types of cameras, or from various devices connected to a computer. Audio, video and other types of media data may be acquired from many different types of sources and devices. In order to support capturing audio and video data from many different types of devices, a component-based architecture is frequently used.
In a component-based architecture, applications call certain functions in an operating system component manager to perform high-level operations. For instance, a component-based multimedia application that creates movies may call a “record” function provided in the component manager to start recording from a device, a “pause” function provided in the component manager to pause recording, etc. An application makes these calls without regard to what type of device is being used. By using a component-based architecture, an application does not have to know how to communicate directly with many different types of devices, instead it only communicates with the component manager.
One type of component that can be used to capture audio and video data is a “sequence grabber.” A sequence grabber component is used to “grab”, capture or obtain a sequence of digitized data, such as a sequence of video images or a sequence of audio samples. For example, a sequence grabber component can be used by an application to obtain video or audio data for use in a movie that the application is creating, and save the data as tracks in movie files.
An application instantiates a sequence grabber component to create the top-level object through which the application controls how the data is obtained through high-level commands. Through the sequence grabber component, a lower-level component called a “sequence grabber channel component” is created to handle the acquisition of a channel of media data of a particular type. For example, an “audio” sequence grabber channel component records a channel of audio or sound data, and a “video” sequence grabber channel component records a channel of video data.
Current sequence grabber channel component implementations are limited. While different types of channels (e.g., one audio type channel and one video type channel) can simultaneously record from the same device, it is not possible to have two instantiations of an audio sequence grabber channel component recording from a single device. In addition, while known audio sequence grabber channel components can record audio data in stereo (i.e., audio data received from two channels), current audio sequence grabber channel components cannot grab more than two channels of audio data. Furthermore, current audio sequence grabber channels are not capable of sampling at a rate greater than 65 kHz.
Audio data today can be very large due to higher channel counts, higher sampling rates and wider sample bit depths. In particular, many devices generate multiple channels of audio data, such as 8 to 24 channels. High end devices may generate even more channels of audio data. Newer multimedia applications, such as internet broadcast streaming, have complex audio recording requirements. For example, a multimedia application may need to be able to simultaneously record multiple channels of audio data in various formats. A multi-channel audio sequence grabbing component is needed.